์คํ์ ๊ตฌํ
- ๋ฐฐ์ด
- ๋์ ๋ฐฐ์ด
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ
๋ฐฐ์ด๋ก ๊ตฌํ
์ ์ ํฌ๊ธฐ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ๋ณด์กฐ ๋ฐฐ์ด์ ํ๋ ๋ง๋ค์ด์ผ ํ๋ค.
๋ณด์กฐ ๋ฐฐ์ด์๋ top์ ์ธ๋ฑ์ค, ๋ฐฐ์ด์ ์ฉ๋, ๋ฐฐ์ด์ ์ฃผ์๊ฐ์ ๊ฐ์ง๋ ํฌ์ธํฐ๋ฅผ ๋ฃ๋๋ค.
์ฅ์ : ์๊ฐ ๋ณต์ก๋๋ ํญ์ O(1)์ด๋ค. ์๋ํ๋ฉด ํญ์ ๋ง์ง๋ง top์ ์๋๊ฒ์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋๊น.
๋จ์ : ๋ฐฐ์ด์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ง์ ํด์ผ๋๋ค๋ ๊ฒ. ๊ทธ๋์ ์คํ์ด ๋ค ์ฐจ๋ฉด ๋ ์ด์ ํ์ฉํ์ง ๋ชปํ๋ค.
๋์ ๋ฐฐ์ด๋ก ๊ตฌํ
์ผ๋ฐ ๋ฐฐ์ด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์
- ์คํ์ด ๊ฐ๋ ์ฐฐ ๋๋ง๋ค ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ 1์ฉ ์ฆ๊ฐ์ํค๋ฉด?
๋ฐฐ์ด ํฌ๊ธฐ๋ฅผ ๋๋ฆด๋๋ง๋ค ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค๊ณ ๊ฑฐ๊ธฐ์ ๋ชจ๋ ์์๋ค์ ๋ณต์ฌํด์ ๋ฃ์ด์ฃผ๊ณ ํ๋ ์ด ๊ณผ์ ๋ค์ด ๋๋ฌด ์ค๋๊ฑธ๋ฆผ.
O(n2)์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
1+2+3+4+5=15 ์ธ๋ฐ?
15 ๋ 5(5+1)/2 ์ ๊ฐ๋ค. 1+2+3+4+...+n = n(n+1)/2.
n2๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋น ์ค ํ๊ธฐ๋ฒ์์๋ ๊ฐ์ฅ ํฐ ์ฐจ์๊ฐ ์๋ ํญ์ ์์ฑํ๋ค๋ ๊ท์น์ ๋ฐ๋ผ O(n2).
- ๋ ๋ฐฐ ํ์ฅ
๋ฐ๋ณต์ด ๋งค ๋ฒ ๋ฐ์ํ์ง ์๊ธฐ ๋๋ฌธ์ 1๋ฒ ๋ฐฉ๋ฒ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๋ค.
O(n)์ ๋ณต์ก๋.
์ผ๋จ 1๋ถํฐ n๊น์ง ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ 2๋ฐฐ๋ก ๋๋ฆฌ๋ ํ์๋ log2โn๋ฒ ์ผ์ด๋๋ค.
n=16์ด๋ผ๊ณ ํ๋ค๋ฉด 4๋ฒ. 1+2+4+8 ๊ทธ๋ฌ๋๊น log2โn์ ๊ฐ์ k๋ผ๊ณ ํ๋ฉด 20+21+.....+2kโ1 ๋ฒ ๋งํผ ๋ณต์ฌ๊ฐ ์ด๋ฃจ์ด์ง๋ค.
๊ทธ๋ฆฌ๊ณ 2์ 0์น๋ถํฐ k-1์น๊น์ง์ ์๋ฅผ ๋ํ ๊ฒ์ 2nโ1๊ณผ ๊ฐ๋ค(๊ณ์ฐํด๋ณด๋ฉด).
์คํ์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ฃ์๋ ์ฝ์ ํ๋ ํ์ + ๋ณต์ฌํ๋ ํ์ ๋ผ๊ณ ๋ณด๋ฉด ๋ณต์ฌํ๋ ํ์๋ฅผ ์ฐพ์์ผ๋ ์ฝ์ ํ๋ ํ์๋ฅผ ์ฐพ์๋ณด์.
๊ฐ๋จํ n๊ฐ๋ฅผ ์ ๋ ฅํ๋ฉด 1๋ฒ์ฉ nํ ์ ๋ ฅํ๋๊น n๋ฒ.
๋ณต์ฌ ํ์(2n-1) + ์ฝ์ ํ์(n) = 3n-1
๋น ์ค ํ๊ธฐ๋ฒ์ ์ํด ์์๋ค์ ์ ๊ฑฐํ๋๊น O(n)์ ๋ณต์ก๋๊ฐ ๋๋ค.
๊ทธ๋ฐ๋ฐ amortized ์๊ฐ๋ณต์ก๋๋ O(1)๋ผ๊ณ ํ๋ค.
amortized๋?
์ฌ์ ์๋ '๋ถํ ์ํ'์ด๋ผ๋๋ฐ, ๋๋ต ํ๊ท ์ ์ธ ๋ณต์ก๋๋ฅผ ๊ณ์ฐํด๋ณด๋ฉด n์ด ์๋๋ผ 1์ด ๊ฑธ๋ฆฐ๋ค๋ ๊ฒ. (n/n = 1)